module.exports = (options) => {
  return async function auth(ctx, next) {
    // 配置白名单路径，这些路径不需要验证token
    const whiteList = [
      '/api/users/login',
      '/api/users/register',
      '/api/vip/notify',
      '/test',
      '/api/agent/publicAgentList',//获取公共智能体列表
    ];
    console.log(ctx.path);
    
    // 如果请求路径在白名单中，直接放行
    if (whiteList.includes(ctx.path)) {
      await next();
      return;
    }

    // 获取token
    const token = ctx.get('Authorization');
    
    if (!token) {
      ctx.status = 401;
      ctx.body = {
        success: false,
        message: '未登录'
      };
      return;
    }

    try {
      // 验证token
      const tokenInfo = await ctx.app.mysql.get('users_token', { token });

      /**
       * Todo：暂时不校验token是否过期，后续需要优化 2025年4月20日20:38:10
       */
      if (!tokenInfo ) { //|| new Date(tokenInfo.expired_at) < new Date()
        ctx.status = 401;
        ctx.body = {
          success: false,
          message: '登录已过期'
        };
        return;
      }

      /**
       * 当前登录的用户信息
       * 将用户信息挂载到 ctx 上，方便后续使用
       */
      ctx.currentUser = await ctx.app.mysql.get('users', { id: tokenInfo.user_id });
      

    } catch (error) {
      ctx.status = 401;
      ctx.body = {
        success: false,
        message: '登录验证失败',
        error: error.message
      };
    }
    await next();
  };
}; 